﻿using Sunny.UI;
using System;
using System.Drawing;

namespace DevelopTool.Common
{
    public static class RichTextBoxHelper
    {
        /// <summary>
        /// 根据RichTextBox的内容调整RichTextBox的大小
        /// </summary>
        /// <param name="richTextBox"></param>
        /// <returns></returns>
        public static Size ResizeUIRichTextBox(UIRichTextBox richTextBox,Size parentSize)
        {
            if(string.IsNullOrEmpty(richTextBox.Text)) return richTextBox.Size;

            // if(richTextBox.Parent == null) return richTextBox.Size;

            // 最大宽度是父级控件的一半宽度
            int maxWidth = Convert.ToInt32(parentSize.Width * 0.5);

            richTextBox.MaximumSize = new Size(maxWidth,int.MaxValue);//最大高度不设限

            //设置最小宽度和高度
            richTextBox.MinimumSize = new Size(30,25);

            // 高度初始化为最小高度，后面会根据内容调整  
            // richTextBox.Height = richTextBox.MinimumSize.Height;

            richTextBox.Height = 0;

            // 创建一个临时的Graphics对象，用于测量文本大小
            using(Graphics g = richTextBox.CreateGraphics())
            {
                // 先测量整体文本的大小
                SizeF textSize = g.MeasureString(richTextBox.Text,richTextBox.Font,maxWidth);

                // 如果最大宽度小于最小宽度，则使用最小宽度  
                richTextBox.Width = Math.Max(textSize.Width.ToInt() + 15,richTextBox.MinimumSize.Width);

                //测量每一行的高度
               // if(richTextBox.Lines.Length > 1)
               // {
                    foreach(string line in richTextBox.Lines)
                    {
                        if(string.IsNullOrEmpty(line))
                        {
                            richTextBox.Height += richTextBox.MinimumSize.Height;
                        }
                        else
                        {
                            SizeF lineSize = g.MeasureString(line,richTextBox.Font,maxWidth);
                            richTextBox.Height += lineSize.Height.ToInt();
                        }


                    }
               // }
            }

            return richTextBox.Size;
        }
    }
}
